package com.darrenchan.netease03

class TraitTest {

}

/**
  * 特质：trait
  *
  * 最基本的功能可以当做Java中的接口来使用，但是底层依赖于Java中的抽象类来实现。
  */
trait Animal11 {
  //抽象字段 没有初始化的属性
  var id: Int
  //具体字段
  var name: String = "aa"

  //定义抽象方法
  def m1(x: Int): Unit

  //定义具体方法
  def m2(x: Int): Int = x + 2
}


//和抽象类用法一模一样
class AnimalImpl extends Animal11 {
  override var id: Int = 11

  override def m1(x: Int): Unit = ()
}


//等同于Java中的interface
trait Eatable {
  def eat(what: String): Unit
}